import sys
import os
import subprocess
import argparse

"""Python版本选择器脚本
用于在KittenTTS项目中指定Python版本运行命令

用法:
    python run_with_python_version.py --version 3.13 --command "start_server_whisper.py"
    python run_with_python_version.py --version 3.13 --script "kitten_tts_api/start_server_whisper.py"
"""

def run_with_python_version(python_version, command=None, script=None):
    """使用指定的Python版本运行命令或脚本"""
    # 构建Python命令
    py_command = f"py -{python_version}"
    
    # 检查Python版本是否可用
    try:
        result = subprocess.run(["py", f"-{python_version}", "--version"], 
                               capture_output=True, text=True, check=True)
        print(f"使用Python版本: {result.stdout.strip()}")
    except subprocess.CalledProcessError:
        print(f"错误: Python {python_version} 未找到，请确保已正确安装")
        sys.exit(1)
    except Exception as e:
        print(f"检查Python版本时发生错误: {str(e)}")
        sys.exit(1)
    
    # 构建完整的命令
    if command:
        full_command = f"{py_command} -m {command}"
    elif script:
        # 确保脚本路径存在
        if not os.path.exists(script):
            print(f"错误: 脚本文件 '{script}' 不存在")
            sys.exit(1)
        full_command = f"{py_command} {script}"
    else:
        print("错误: 必须提供command或script参数")
        sys.exit(1)
    
    print(f"执行命令: {full_command}")
    
    # 执行命令
    try:
        # 使用shell=True来支持复杂命令
        subprocess.run(full_command, shell=True, check=True)
    except subprocess.CalledProcessError as e:
        print(f"命令执行失败: {str(e)}")
        sys.exit(1)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="使用指定的Python版本运行KittenTTS服务")
    parser.add_argument("--version", required=True, help="Python版本，例如 3.13")
    parser.add_argument("--command", help="要运行的Python模块命令")
    parser.add_argument("--script", help="要运行的Python脚本路径")
    
    args = parser.parse_args()
    
    run_with_python_version(args.version, args.command, args.script)